home *** CD-ROM | disk | FTP | other *** search
-
- realtab:
- dc.l prot1-78935450
- dc.l prot2-78935450
- dc.l prot3-78935450
- dc.l prot4-78935450
- dc.l prot5-78935450
- dc.l prot6-78935450
- dc.l prot7-78935450
- dc.l prot8-78935450
- dc.l prot9-78935450
- dc.l protA-78935450
-
- objvels: ds.l 8
- Conditions: dc.w 0
-
- Robotanimpos:
- dc.w 0
- Robotarmpos
- dc.w 0
- clump: dc.w 0
-
- SLAVERobotWalk:
- move.l #RobotPts+2,a0
- move.l #Robotanim,a1
- move.w Robotanimpos(pc),d0
-
- clr.b clump
- adda.w d0,a1
-
- move.w #(38*3)-1,d0
- putinpts:
- move.w (a1)+,(a0)+
- dbra d0,putinpts
-
-
- move.l #RightArm,a0
- move.l #Armanim,a1
- move.w Robotarmpos(pc),d0
- adda.w d0,a1
- move.w #(14*3)-1,d0
- putinpts2:
- move.w (a1)+,(a0)+
- dbra d0,putinpts2
-
- move.l #Robot_MainBody,a0
- move.l #BodyPlace+2,a1
- move.w (a0)+,d0
- move.w RobotPts+4+14*6,d1
- add.w RobotPts+4+22*6,d1
- asr.w #1,d1
-
- putinheights:
- move.w (a0)+,d2
- add.w d1,d2
- move.w d2,(a1)
- addq #6,a1
- dbra d0,putinheights
-
- move.w visxpos,d0
- add.w visxdir,d0
- cmp.w #24,d0
- blt.s okvisr
- move.w #-4,visxdir
- okvisr
- cmp.w #-24,d0
- bgt.s okvisl
- move.w #4,visxdir
- okvisl:
- move.w d0,visxpos
-
- move.l #VISOR,a0
- add.w #64,d0
- move.b d0,6(a0)
- move.b d0,18(a0)
- move.b d0,22(a0)
- add.b #63,d0
- move.b d0,10(a0)
- move.b d0,14(a0)
-
- rts
-
- visxpos: dc.w 0
- visxdir: dc.w 4
-
- FramesToDraw: dc.w 0
- TempFrames: dc.w 0
-
- SLAVEANIM:
-
- move.l PLR1_Roompt,a0
- move.w (a0),PLR1_Zone
- move.l PLR2_Roompt,a0
- move.w (a0),PLR2_Zone
-
- bsr SLAVESwitchRoutine
- bsr SLAVEDoorRoutine
- bsr SLAVELiftRoutine
- ; bsr ObjectHandler
- bsr SLAVERobotWalk
-
- rts
-
- ******************************
-
- tstdir: dc.w 0
-
- liftheighttab: ds.w 20
- doorheighttab: ds.w 20
- stoodonlift: dc.b 0
- liftattop: dc.b 0
- liftatbot: dc.b 0
- ZoneBrightTable:
- ds.l 300
-
- even
- SLAVELiftRoutine:
-
- move.l LiftData,a0
- move.l #liftheighttab,a6
-
- doalift:
-
- move.w (a0)+,d0 ; bottom of lift movement
- cmp.w #999,d0
- bne notallliftsdone
- move.w #999,(a6)
- rts
- notallliftsdone:
- move.w (a0)+,d1 ; top of lift movement.
-
- move.w (a0),d3
- move.w d3,(a6)+
- move.w 2(a0),d2
- move.w d2,d7
- muls TempFrames,d2
- add.w d2,d3
- move.w 2(a0),d2
- cmp.w d3,d0
- sle.s liftatbot
- bgt.s .nolower
- moveq #0,d2
- move.w d0,d3
- .nolower:
-
- cmp.w d3,d1
- sge.s liftattop
- blt.s .noraise
- moveq #0,d2
- move.w d1,d3
- .noraise:
-
- sub.w d3,d0
- cmp.w #15*16,d0
- slt d6
-
- move.w d3,(a0)+
- move.l a0,a5
- move.w d2,(a0)+
- move.w d2,d7
-
- move.l (a0)+,a1
- add.l #LEVELGRAPHICS,a1
- asr.w #2,d3
- move.w d3,d0
- asl.w #2,d0
- move.w d0,2(a1)
- move.w d3,d0
- muls #256,d3
- move.w (a0)+,d5
- move.l ZoneAdds,a1
- move.l (a1,d5.w*4),a1
- add.l #LEVELDATA,a1
- move.w (a1),d5
- move.l PLR1_Roompt,a3
- move.l d3,2(a1)
- and.w #63,d0
- neg.w d0
- add.w #64,d0
-
- cmp.w (a3),d5
- sne.s stoodonlift
-
- move.w (a0)+,d2 ; conditions
- and.w Conditions,d2
- cmp.w -2(a0),d2
- beq.s .satisfied
-
- move.w (a0)+,d5
-
- .dothesimplething:
- move.l FloorLines,a3
- .simplecheck:
- move.w (a0)+,d5
- blt nomoreliftwalls
- asl.w #4,d5
- lea (a3,d5.w),a4
- move.w #0,14(a4)
- move.l (a0)+,a1
- add.l #LEVELGRAPHICS,a1
- move.l (a0)+,a2
- adda.w d0,a2
- move.l a2,10(a1)
- move.l d3,20(a1)
- bra.s .simplecheck
- bra nomoreliftwalls
-
- .satisfied:
-
- move.l FloorLines,a3
- moveq #0,d4
- moveq #0,d5
- move.b (a0)+,d4
- move.b (a0)+,d5
- tst.b liftattop
- bne tstliftlower
- tst.b liftatbot
- bne tstliftraise
-
- backfromlift
-
- liftwalls:
- move.w (a0)+,d5
- blt nomoreliftwalls
-
- asl.w #4,d5
- lea (a3,d5.w),a4
- move.w 14(a4),d4
- move.w #0,14(a4)
- and.w d1,d4
- cmp.w d1,d4
- bne.s .nothinghit
- move.w d7,(a5)
- move.w #0,Noisex
- move.w #0,Noisez
- move.w #50,Noisevol
- move.w #5,Samplenum
- move.b #1,chanpick
- st notifplaying
- move.b #$fe,IDNUM
- movem.l a0/a3/a4/d0/d1/d2/d3/d6/d7,-(a7)
- jsr MakeSomeNoise
- movem.l (a7)+,a0/a3/a4/d0/d1/d2/d3/d6/d7
- .nothinghit:
- move.l (a0)+,a1
- add.l #LEVELGRAPHICS,a1
- move.l (a0)+,a2
- adda.w d0,a2
- move.l a2,10(a1)
- move.l d3,20(a1)
- bra liftwalls
-
- nomoreliftwalls
- bra doalift
-
- rts
-
- tstliftlower:
- cmp.b #1,d5
- blt.s lift0
- beq.s lift1
- cmp.b #3,d5
- blt.s lift2
- beq.s lift3
-
- lift0:
- tst.b SPCTAP
- bne.s lift1
- move.w #$ffff,d1
- bra backfromlift
-
- lift1:
- move.w #0,d1
- tst.b stoodonlift
- beq.s lift1b
- move.w #%100000000,d1
- lift1b:
- move.w #4,d7
- bra backfromlift
-
-
- lift2:
- move.w #0,d1
- move.w #4,d7
- bra backfromlift
-
- lift3:
- move.w #$ffff,d1
- bra backfromlift
-
- tstliftraise:
- cmp.b #1,d4
- blt.s rlift0
- beq.s rlift1
- cmp.b #3,d4
- blt.s rlift2
- beq.s rlift3
-
- rlift0:
- tst.b SPCTAP
- bne.s rlift1
- move.w #$ffff,d1
- bra backfromlift
-
- rlift1:
- tst.b stoodonlift
- bne.s rlift3
- move.w #0,d1
- move.w #-4,d7
- bra backfromlift
-
- rlift2:
- move.w #0,d1
- move.w #-4,d7
- bra backfromlift
-
- rlift3:
- move.w #$ffff,d1
- bra backfromlift
-
-
- animtimer: dc.w 2
-
-
- doordir: dc.w -1
- doorpos: dc.w -9
- dooropen: dc.b 0
- doorclosed: dc.b 0
-
- even
- SLAVEDoorRoutine:
-
- move.l #doorheighttab,a6
- move.l DoorData,a0
-
- doadoor:
-
- move.w (a0)+,d0 ; bottom of door movement
- cmp.w #999,d0
- bne notalldoorsdone
- move.w #999,(a6)+
- rts
- notalldoorsdone:
- move.w (a0)+,d1 ; top of door movement.
-
- move.w (a0),d3
- move.w d3,(a6)+
- move.w 2(a0),d2
- muls TempFrames,d2
- add.w d2,d3
- move.w 2(a0),d2
- cmp.w d3,d0
- sle.s doorclosed
- bgt.s nolower
- moveq #0,d2
- nolower:
-
- cmp.w d3,d1
- sge.s dooropen
- blt.s noraise
- moveq #0,d2
- move.w d1,d3
- noraise:
-
- sub.w d3,d0
- cmp.w #15*16,d0
- sge d6
-
- move.w d3,(a0)+
- move.l a0,a5
- move.w d2,(a0)+
- move.w d2,d7
-
- move.l (a0)+,a1
- add.l #LEVELGRAPHICS,a1
- asr.w #2,d3
- move.w d3,d0
- asl.w #2,d0
- move.w d0,2(a1)
- move.w d3,d0
- muls #256,d3
- move.l ZoneAdds,a1
- move.w (a0)+,d5
-
-
- move.l (a1,d5.w*4),a1
- add.l #LEVELDATA,a1
- move.l d3,6(a1)
- and.w #63,d0
- neg.w d0
- add.w #64,d0
-
- cmp.w PLR1_Zone,d5
- bne.s NotGoBackUp
- tst.w d2
- blt.s NotGoBackUp
- move.w #-16,d7
- move.w #0,d1
- move.w (a0)+,d2
- move.w (a0)+,d5
- bra backfromtst
- NotGoBackUp:
-
-
- move.w (a0)+,d2 ; conditions
- and.w Conditions,d2
-
- cmp.w -2(a0),d2
- beq.s satisfied
-
- move.w (a0)+,d5
-
- dothesimplething:
- move.l FloorLines,a3
- simplecheck:
- move.w (a0)+,d5
- blt nomoredoorwalls
- asl.w #4,d5
- lea (a3,d5.w),a4
- move.w #0,14(a4)
- move.l (a0)+,a1
- add.l #LEVELGRAPHICS,a1
- move.l (a0)+,a2
- adda.w d0,a2
- move.l a2,10(a1)
- move.l d3,24(a1)
- bra.s simplecheck
- bra nomoredoorwalls
-
-
- satisfied:
-
- moveq #0,d4
- moveq #0,d5
- move.b (a0)+,d5
- move.b (a0)+,d4
- tst.b dooropen
- bne tstdoortoclose
- tst.b doorclosed
- bne tstdoortoopen
- move.w #$ffff,d1
-
- backfromtst:
-
- move.l FloorLines,a3
-
- doorwalls:
- move.w (a0)+,d5
- blt.s nomoredoorwalls
- asl.w #4,d5
- lea (a3,d5.w),a4
- move.w 14(a4),d4
- move.w #0,14(a4)
- and.w d1,d4
- cmp.w d1,d4
- bne.s nothinghit
- move.w d7,(a5)
- move.w #0,Noisex
- move.w #0,Noisez
- move.w #50,Noisevol
- move.w #5,Samplenum
- move.b #1,chanpick
- st notifplaying
- move.b #$fd,IDNUM
- movem.l a0/a3/d0/d1/d2/d3/d6,-(a7)
- jsr MakeSomeNoise
- movem.l (a7)+,a0/a3/d0/d1/d2/d3/d6
- nothinghit:
- move.l (a0)+,a1
- add.l #LEVELGRAPHICS,a1
- move.l (a0)+,a2
- adda.w d0,a2
- move.l a2,10(a1)
- move.l d3,24(a1)
- bra.s doorwalls
-
- nomoredoorwalls
- bra doadoor
-
- rts
-
- tstdoortoopen:
- cmp.w #1,d5
- blt.s door0
- beq.s door1
- cmp.w #3,d5
- blt.s door2
- beq.s door3
- cmp.w #5,d5
- blt.s door4
- beq.s door5
-
- door0:
- tst.b SPCTAP
- bne.s door1
- move.w #$ffff,d1
- bra backfromtst
-
- door1:
- move.w #%100000000,d1
- move.w #-16,d7
- bra backfromtst
-
- door2:
- move.w #%10000000000,d1
- move.w #-16,d7
- bra backfromtst
-
- door3:
- move.w #%1000000000,d1
- move.w #-16,d7
- bra backfromtst
-
- door4:
- move.w #0,d1
- move.w #-16,d7
- bra backfromtst
-
- door5:
- move.w #$ffff,d1
- bra backfromtst
-
- tstdoortoclose:
- tst.w d4
- beq.s dclose0
- bra.s dclose1
-
- dclose0:
- move.w #4,d7
- move.w #0,d1
- bra backfromtst
-
- dclose1:
- move.w #$ffff,d1
- bra backfromtst
-
- SLAVESwitchRoutine:
- tst.b SPCTAP
- bne.s SpaceIsPressed
- rts
- SpaceIsPressed:
- move.l SwitchData,a0
- move.w #7,d0
- move.l Points,a1
- move.w PLR1_xoff,d1
- move.w PLR1_zoff,d2
- CheckSwitches:
- move.w (a0),d3
- blt NotCloseEnough
- move.w 2(a0),d3
- lea (a1,d3.w*4),a2
- move.w (a2),d3
- add.w 4(a2),d3
- asr.w #1,d3
- move.w 2(a2),d4
- add.w 6(a2),d4
- asr.w #1,d4
- sub.w d1,d3
- muls d3,d3
- sub.w d2,d4
- muls d4,d4
- add.l d3,d4
- cmp.l #60*60,d4
- bge NotCloseEnough
- move.l 4(a0),a3
- add.l #LEVELGRAPHICS,a3
- move.w 2(a3),d3
- and.w #%1111000000111111,d3
- not.b 8(a0)
- beq.s switchoff
- or.w #32*64,d3
- switchoff:
- move.w d3,2(a3)
- move.w #7,d3
- sub.w d0,d3
- addq #4,d3
- move.w Conditions,d4
- bchg d3,d4
- move.w d4,Conditions
- movem.l a0/a1/d0,-(a7)
- move.w #0,Noisex
- move.w #0,Noisez
- move.w #50,Noisevol
- move.w #10,Samplenum
- move.b #1,chanpick
- st notifplaying
- move.b #$fc,IDNUM
- movem.l a0/a3/d0/d1/d2/d3/d6,-(a7)
- jsr MakeSomeNoise
- movem.l (a7)+,a0/a3/d0/d1/d2/d3/d6
-
- movem.l (a7)+,a0/a1/d0
-
- NotCloseEnough:
- adda.w #12,a0
- dbra d0,CheckSwitches
- rts
-
- prot1: dc.w 0
-
- tempGotBigGun: dc.w 0
- tempGunDamage: dc.w 0
- tempGunNoise: dc.w 1
- tempxoff: dc.w 0
- tempzoff: dc.w 0
- tempRoompt: dc.l 0
-
- PLR1_GotBigGun: dc.w 0
- PLR1_GunDamage: dc.w 0
- PLR1_GunNoise: dc.w 0
- PLR2_GotBigGun: dc.w 0
- PLR2_GunDamage: dc.w 0
- PLR2_GunNoise: dc.w 0
- bulyspd: dc.w 0
- closedist: dc.w 0
-
- ObsInLine:
- ds.b 400
-
- rotcount:
- dc.w 0
-
- shotvels: ds.l 20
-
- PLR1_clicked: dc.b 0
- PLR2_clicked: dc.b 0
- popping: ds.l 5*4
- targetydiff: dc.l 0
- TimeToShoot: dc.w 0
-
- tempangpos: dc.w 0
- tempxdir: dc.w 0
- tempzdir: dc.w 0
-
-
- GunFrame: dc.w 0
-
- duh: dc.w 0
- double: dc.w 0
- ivescreamed: dc.w 0
-
- putinbackdrop:
-
- move.l a0,-(a7)
-
- move.w PLR1_angpos,d5
- and.w #8191,d5
- muls #432,d5
- divs #8192,d5
- muls #38*2,d5
-
- CACHE_ON d1
-
- move.l frompt,a0
- adda.w #104*4,a0
- move.l #EndBackPicture,a3
- lea.l BackPicture,a1
- add.l d5,a1
- move.w #2,d4
- bra allbars
- cnop 0,32
- allbars:
- move.w #31,d3
- onebar:
- vertline:
- val SET 0
-
- REPT 19
- move.l (a1)+,d0
- move.w d0,val+104*4(a0)
- swap d0
- move.w d0,val(a0)
- val SET val+104*8
- ENDR
-
- cmp.l a3,a1
- blt.s notoffrightend
- move.l #BackPicture,a1
- notoffrightend:
-
- addq #4,a0
- dbra d3,onebar
- addq #4,a0
- dbra d4,allbars
-
- move.l (a7)+,a0
- rts
-
-
-
-
-
-